package Client;

import Exceptions.InputTypeException;
import ReadConsole.ReadConsole;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.Socket;

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
/**
 *
 * @author Florian
 */
public class MainClient {

    public static final int PORT = 1234;

    public static void main(String[] argv) {
        int choix;
        int retourServeur;
        CodeErreur erreur = new CodeErreur();
        Double montant, txInterets, annuite;
        montant = 0.0;
        txInterets = 0.0;
        int nbAnnuite = 0;
        annuite = 0.0;

        Socket s = null;
        try {
            s = new Socket(argv[0], PORT);
        } catch (IOException e) {
            System.err.println("Impossible de se connecter au serveur.");
            e.printStackTrace();
            System.exit(1);
        } // try
        DataInputStream in = null;
        try {
            DataOutputStream out = new DataOutputStream(s.getOutputStream());
            in = new DataInputStream(s.getInputStream());

            System.out.println("Quel calcul voulez vous effectuer ?");
            System.out.println("1 - Annuité / 2 - Nombre d'années.");
            choix = ReadConsole.readInt();
            out.writeInt(choix);

            retourServeur = in.readInt();
            if (retourServeur > 0) {
                System.out.println(erreur.getMessage(retourServeur));
                return;
            }
            switch (choix) {
                case 1:
                    System.out.print("Saisissez le montant de l'emprunt : ");
                    montant = ReadConsole.readDouble();
                    out.writeDouble(montant);

                    retourServeur = in.readInt();
                    if (retourServeur > 0) {
                        System.out.println(erreur.getMessage(retourServeur));
                        return;
                    }
                    System.out.print("Saisissez le nombre d'annuités : ");
                    nbAnnuite = ReadConsole.readInt();
                    out.writeInt(nbAnnuite);

                    retourServeur = in.readInt();
                    if (retourServeur > 0) {
                        System.out.println(erreur.getMessage(retourServeur));
                        return;
                    }
                    System.out.print("Saisissez le taux de l'emprunt : ");
                    txInterets = ReadConsole.readDouble();
                    out.writeDouble(txInterets);


                    retourServeur = in.readInt();
                    if (retourServeur > 0) {
                        System.out.println(erreur.getMessage(retourServeur));
                    } else {
                        //Lecture du début du message
                        annuite = in.readDouble();
                        //récupération du résultat
                        System.out.println("La valeur de l'annnuité est : " + annuite);
                    }
                    break;
                case 2:
                    System.out.print("Saisissez le montant de l'annuité : ");
                    annuite = ReadConsole.readDouble();
                    out.writeDouble(annuite);

                    retourServeur = in.readInt();
                    if (retourServeur > 0) {
                        System.out.println(erreur.getMessage(retourServeur));
                        return;
                    }
                    System.out.print("Saisissez le taux de l'emprunt : ");
                    txInterets = ReadConsole.readDouble();
                    out.writeDouble(txInterets);

                    retourServeur = in.readInt();
                    if (retourServeur > 0) {
                        System.out.println(erreur.getMessage(retourServeur));
                        return;
                    }
                    System.out.print("Saisissez le montant de l'emprunt : ");
                    montant = ReadConsole.readDouble();
                    out.writeDouble(montant);

                    retourServeur = in.readInt();
                    if (retourServeur > 0) {
                        System.out.println(erreur.getMessage(retourServeur));
                    } else {
                        //Lecture du résultat
                        double nbAnnee = in.readDouble();
                        //récupération du résultat
                        System.out.println("Le nombre d'années est : " + nbAnnee);
                    }
                    break;
            }
        } catch (InputTypeException ite) {
            System.out.println("Votre saisie du type " + ite.getMessage() + " est incorrecte.");
        } catch (IOException e) {
            System.err.println("La connexion avec le serveur a été perdue.");
        } catch (Exception e1) {
            e1.printStackTrace();
        } finally {
            try {
                if (in != null) {
                    in.close();
                }
                s.close();
            } catch (IOException e) {
                System.err.println("La connexion avec le serveur a été perdue.");
            } // try
        } // try
        System.exit(0);
    } // main(String[])
} // class FileClient

